/**
 * =================================================
 * Vue3 自动从components目录引入第三方组件导入装载进项目
 * -------------------------------------------------
 * 每个插件 app.use 方法需封装在components的各子目录内
 * -------------------------------------------------
 * Author: 曹操<pgcao@qq.com>
 * HomePage: https://gitee.com/pgcao/vue3-vite2-ts
 * =================================================
 */
import type { App } from 'vue';

export default async (app: App, callbackfn: () => void) => {
    // 批量装载VUE项目所需组件插件, 即 app.use('xxx') 的东西，每个子目录为一个依赖
    const pluginList = import.meta.globEager('./components/*/index.ts');
    await Promise.all(Object.values(pluginList).map(async (module) => {
        if (typeof module.default === 'function') {
            await module.default(app);
        }
    }));

    /* @__PURE__ */ //esbuild打包编译时移除
    console.log('[vite] vue plugins done');

    // 自动装载完成所有插件后再实例化到DOM
    callbackfn.call(null)
};